/**
 * 显示消息提示框
 * @param content 提示的标题
 */
export function toast(content) {
	uni.showToast({
		icon: 'none',
		title: content
	})
}

/**
 * 显示模态弹窗
 * @param content 提示的标题
 */
export function showConfirm(content) {
	return new Promise((resolve, reject) => {
		uni.showModal({
			title: '提示',
			content: content,
			cancelText: '取消',
			confirmText: '确定',
			success: function(res) {
				resolve(res)
			}
		})
	})
}

/**
 * 参数处理
 * @param params 参数
 */
export function tansParams(params) {
	let result = ''
	for (const propName of Object.keys(params)) {
		const value = params[propName]
		var part = encodeURIComponent(propName) + "="
		if (value !== null && value !== "" && typeof(value) !== "undefined") {
			if (typeof value === 'object') {
				for (const key of Object.keys(value)) {
					if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') {
						let params = propName + '[' + key + ']'
						var subPart = encodeURIComponent(params) + "="
						result += subPart + encodeURIComponent(value[key]) + "&"
					}
				}
			} else {
				result += part + encodeURIComponent(value) + "&"
			}
		}
	}
	return result
}

export function formatNumber(number) {
	// 检查输入是否为0或者无效值
	if (number === 0) {
		return '0.00';
	}
	if (typeof number === 'undefined' || number === null || isNaN(number)) {
		return '-';
	}

	// 将数字转换为字符串，并分割整数部分和小数部分
	let numStr = number.toString();
	let parts = numStr.split('.');

	// 格式化整数部分，添加千分位
	let integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');

	// 如果有小数部分，保留两位小数
	let decimalPart = parts.length > 1 ? parts[1] : '';
	if (decimalPart.length > 2) {
		decimalPart = decimalPart.substring(0, 2);
	}

	// 合并整数部分和小数部分
	return integerPart + (decimalPart ? '.' + decimalPart : '');
}

export function formatDateTime(dateTimeStr, formatStr = 'YYYY-MM-DD') {
	if (!dateTimeStr) return '';
	// 将时间字符串转换为Date对象
	const dateTime = new Date(dateTimeStr);

	// 获取年、月、日、时、分、秒
	const year = dateTime.getFullYear();
	const month = dateTime.getMonth() + 1; // 月份从0开始
	const day = dateTime.getDate();
	const hour = dateTime.getHours();
	const minute = dateTime.getMinutes();
	const second = dateTime.getSeconds();

	// 根据格式字符串格式化日期和时间
	return formatStr
		.replace('YYYY', year)
		.replace('MM', month.toString().padStart(2, '0'))
		.replace('DD', day.toString().padStart(2, '0'))
		.replace('HH', hour.toString().padStart(2, '0'))
		.replace('mm', minute.toString().padStart(2, '0'))
		.replace('ss', second.toString().padStart(2, '0'));
}
/**
 * 获取name
 * @param {Object} list
 * @param {Object} target
 * @param {Object} value
 * @param {Object} name
 */
export function returnName(list, target, value, name) {
  value = value ? value : 'value'
  name = name ? name : 'name'
  var _name = "";
  if (!list) return _name;
  _name = [];
  let target_arr = [];
  if (Array.isArray(target)) { // 兼容 target 数组
    target_arr = target;
  } else {
    target_arr.push(target)
  }
  for (const item of target_arr) {
    for (var i in list) {
      if (list[i][value] == item) {
        _name.push(list[i][name]);
      }

    }
  }
  return _name.join(',');
}

/**
 * 倒计时
 * @param {Object} targetTime
 */
export function calculateCountdown(targetTime) {
    // 将传入的时间字符串转换为Date对象
    const targetDate = new Date(targetTime);

    // 获取当前时间
    const now = new Date();

    // 计算时间差（毫秒）
    const timeDifference = targetDate - now;

    // 如果时间差小于0，表示目标时间已经过去
    if (timeDifference < 0) {
        return false;
    }

    // 计算天数
    const days = Math.floor(timeDifference / (1000 * 60 * 60 * 24));

    // 计算剩余的时间（毫秒）并转换为小时、分钟和秒
    const hours = Math.floor((timeDifference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((timeDifference % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((timeDifference % (1000 * 60)) / 1000);

    // 格式化时间显示
    const formattedTime = `${days} 天 ${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;

    return { days, hours, minutes, seconds };
}